Michael Fagan (software Designer)
   HOME

TheInfoList



OR:

A Fagan inspection is a process of trying to find defects in documents (such as
source code In computing, source code, or simply code, is any collection of code, with or without comments, written using a human-readable programming language, usually as plain text. The source code of a program is specially designed to facilitate the wo ...
or formal specifications) during various phases of the
software development process In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
. It is named after Michael Fagan, who is credited with the invention of formal
software inspection Inspection in software engineering, refers to peer review of any work product by trained individuals who look for defects using a well defined process. An inspection might also be referred to as a Fagan inspection after Michael Fagan, the creator ...
s. Fagan inspection defines a process as a certain activity with pre-specified entry and
exit criteria Exit criteria are the criteria or requirements which must be met to complete a specific task or process as used in some fields of business or science, such as software engineering. Usage The term exit criteria is often used in research and devel ...
. In every process for which entry and exit criteria are specified, Fagan inspections can be used to validate if the output of the process complies with the exit criteria specified for the process. Fagan inspection uses a group review method to evaluate the output of a given process.


Examples

Examples of activities for which Fagan inspection can be used are: * Requirement specification * Software/Information System architecture (for example DYA) * Programming (for example for iterations in XP or DSDM) * Software testing (for example when creating test scripts)


Usage

The
software development process In software engineering, a software development process is a process of dividing software development work into smaller, parallel, or sequential steps or sub-processes to improve design, product management. It is also known as a software devel ...
is a typical application of Fagan inspection. As the costs to remedy a defect are up to 10 to 100 times less in the early operations compared to fixing a defect in the maintenance phase, it is essential to find defects as close to the point of insertion as possible. This is done by inspecting the output of each operation and comparing that to the output requirements, or
exit criteria Exit criteria are the criteria or requirements which must be met to complete a specific task or process as used in some fields of business or science, such as software engineering. Usage The term exit criteria is often used in research and devel ...
, of that operation.


Criteria

Entry criteria are the criteria or requirements which must be met to enter a specific process. For example, for Fagan inspections the high- and low-level documents must comply with specific entry criteria before they can be used for a formal inspection process. Exit criteria are the criteria or requirements which must be met to complete a specific process. For example, for Fagan inspections the low-level document must comply with specific exit criteria (as specified in the high-level document) before the development process can be taken to the next phase. The exit criteria are specified in a high-level document, which is then used as the standard to which the operation result (low-level document) is compared during the inspection. Any failure of the low-level document to satisfy the high-level requirements specified in the high-level document are called ''defects'' (and can be further categorized as ''major'' or ''minor'' defects). Minor defects do not threaten the correct functioning of the software, but may be small errors such as spelling mistakes or unaesthetic positioning of controls in a
graphical user interface The GUI ( "UI" by itself is still usually pronounced . or ), graphical user interface, is a form of user interface that allows users to interact with electronic devices through graphical icons and audio indicator such as primary notation, inste ...
.


Typical operations

A typical Fagan inspection consists of the following operations: * Planning ** Preparation of materials ** Arranging of participants ** Arranging of meeting place * Overview ** Group education of participants on the materials under review ** Assignment of roles * Preparation ** The participants review the item to be inspected and supporting material to prepare for the meeting noting any questions or possible defects ** The participants prepare their roles * Inspection meeting ** Actual finding of defect * Rework ** Rework is the step in software inspection in which the defects found during the inspection meeting are resolved by the author, designer or programmer. On the basis of the list of defects the low-level document is corrected until the requirements in the high-level document are met. * Follow-up ** In the follow-up phase of software inspections all defects found in the inspection meeting should be corrected (as they have been fixed in the rework phase). The moderator is responsible for verifying that this is indeed the case. They should verify that all defects are fixed and no new defects are inserted while trying to fix the initial defects. It is crucial that all defects be corrected, as the costs of fixing them in a later phase of the project can be 10 to 100 times higher compared to the current costs.


Follow-up

In the follow-up phase of a Fagan inspection, defects fixed in the rework phase should be verified. The moderator is usually responsible for verifying rework. Sometimes fixed work can be accepted without being verified, such as when the defect was trivial. In non-trivial cases, a full re-inspection is performed by the inspection team (not only the moderator). If verification fails, go back to the rework process.


Roles

The inspection process is normally performed by members of the same team that is implementing the project. The participants fulfill different roles within the inspection process: * Author/Designer/Coder: the person who wrote the low-level document * Reader: paraphrases the low-level document * Reviewers: reviews the low-level document from a testing standpoint * Moderator: responsible for the inspection session, functions as a coach


Benefits and results

By using inspections the number of errors in the final product can significantly decrease, creating a higher quality product. In the future the team will even be able to avoid errors as the inspection sessions give them insight into the most frequently made errors in both design and coding providing avoidance of error at the root of their occurrence. By continuously improving the inspection process these insights can even further be used. Together with the qualitative benefits mentioned above major "cost improvements" can be reached as the avoidance and earlier detection of errors will reduce the amount of resources needed for debugging in later phases of the project. In practice very positive results have been reported by large corporations such as IBM, indicating that 80% to 90% of defects can be found and savings in resources up to 25% can be reached.


Improvements

Although the Fagan inspection method has been proved to be very effective, improvements have been suggested by multiple researchers. M. Genuchten for example has been researching the usage of an
Electronic Meeting System An electronic meeting system (EMS) is a type of computer software that facilitates creative problem solving and decision-making of groups within or across organizations. The term was coined by Alan R. Dennis et al. in 1988. The term is synonymous w ...
(EMS) to improve the productivity of the meetings with positive results Other researchers propose the usage of software that keeps a database of detected errors and automatically scans program code for these common errors. This again should result in improved productivity.


References

{{reflist Ron Radice, High Quality, Low Cost Software Inspections, Paradoxicon Publishing (September 21, 2001) Method engineering Quality Software testing